package cn.iocoder.yudao.module.erp.dal.mysql.gi;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.erp.dal.dataobject.gi.GiWlmqDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.erp.controller.admin.gi.giwlmq.vo.*;

/**
 * ERP物流乌鲁木齐仓库 Mapper
 *
 * @author 天使管理员
 */
@Mapper
public interface GiWlmqMapper extends BaseMapperX<GiWlmqDO> {

    default PageResult<GiWlmqDO> selectPage(GiWlmqPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<GiWlmqDO>()
                .likeIfPresent(GiWlmqDO::getNo, reqVO.getNo())
                .eqIfPresent(GiWlmqDO::getStoreType, reqVO.getStoreType())
                .eqIfPresent(GiWlmqDO::getInCount, reqVO.getInCount())
                .likeIfPresent(GiWlmqDO::getInName, reqVO.getInName())
                .eqIfPresent(GiWlmqDO::getInVolume, reqVO.getInVolume())
                .eqIfPresent(GiWlmqDO::getWeight, reqVO.getWeight())
                .eqIfPresent(GiWlmqDO::getDensity, reqVO.getDensity())
                .eqIfPresent(GiWlmqDO::getDeliveryPhone, reqVO.getDeliveryPhone())
                .likeIfPresent(GiWlmqDO::getDeliveryName, reqVO.getDeliveryName())
                .eqIfPresent(GiWlmqDO::getEarpayAmount, reqVO.getEarpayAmount())
                .eqIfPresent(GiWlmqDO::getInPic, reqVO.getInPic())
                .eqIfPresent(GiWlmqDO::getLine, reqVO.getLine())
                .eqIfPresent(GiWlmqDO::getFile, reqVO.getFile())
                .eqIfPresent(GiWlmqDO::getNote, reqVO.getNote())
                .eqIfPresent(GiWlmqDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(GiWlmqDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(GiWlmqDO::getDeleted,0)
                .orderByDesc(GiWlmqDO::getId));
    }

    // 获取当前最大 ID
    default String getCurrentMaxOrderNumber() {
        GiWlmqDO result = selectOne(new LambdaQueryWrapperX<GiWlmqDO>()
                .select(GiWlmqDO::getId)
                .orderByDesc(GiWlmqDO::getId)
                .last("LIMIT 1"));
        return (result != null) ? result.getId() : null;
    }

}